package cn.thinkluck.pattern.observier.weather;

import java.util.ArrayList;
import java.util.List;

/**
 * 气象站发布者
 *
 * @Author liutao
 * @DateTime 2024/7/24 下午9:15
 */
public class WeatherStation implements Subject {
    /**
     * 观察者列表
     */
    private List<Observer> observers = new ArrayList<>();
    /**
     * 温度
     */
    private float temperature;

    /**
     * 改变温度时通知观察者
     *
     * @param temperature 温度
     */
    public void changeTemperature(float temperature) {
        this.temperature = temperature;
        notifyObservers(temperature);
    }

    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers(float temperature) {
        for (Observer observer : observers) {
            observer.update(this.temperature);
        }
    }
}
